PrintWriter output;
import processing.serial.*;
Serial myPort;
String setting = "999,0,16,1,0";
PFont f;
String rinput[];
int[] input = new int[1000];
int[] d = new int[500];
float all;
float average;
float mid;
int run;
void setup() {
  String filename = "data" + " " + month() + "-" + day() + " " + hour() +"-"+  minute() +".csv";
  output = createWriter(filename);
  println(Serial.list());
  myPort = new Serial(this, Serial.list()[0], 9600);
  myPort.bufferUntil('\n');
  size(500, 550);        
  background(0);
  f = createFont("Arial", 16, true);
}
void draw() {
  background(0);
  textFont(f, 16);
  fill(255);
  text("setting(n(<1000),skip(ms),gain(0,1,2,4,8 or 16),repeat,interval:",1,20);
  text(setting, 1, 40);
  text("last shot:  average:                          middle:",1,60);
  text(average,140,60);
  text(mid,310,60);
  text("("+run+")",470,60);
  for (int i = 0;i<500;i++){
    stroke(255);
    line(i,549,i,549-d[i]);
  }
}

void serialEvent (Serial myPort) {
  String inString = myPort.readStringUntil('\n');
  if (inString != null) {
    output.print(inString);
    output.println(month() + "/" + day() +"/" +year() + " "+ hour() + ":" +minute() +":" + second());
    output.flush();
    String[] rinput =split(inString,',');
    average = 0;
    for(int i = 0;i<rinput.length;i++){
    input[i] = parseInt(rinput[i]);
    average = average+float(input[i])/float(rinput.length);
    }
    //average = all / rinput.length;
    int[] ninput = int(rinput);
    ninput = sort(ninput);
    mid = ninput[int(ninput.length/2)];
//    for(int i = 0;i<n;i++){
  //    d[int(float(i)/float(n))] = int(float(input[i])*500.0/35000.0);
  //}
  for (int i =0;i<500;i++){
    d[i]=int(float(input[int(i*rinput.length/500.0)])/35000.00*500.000);
  }
//        text(d[125], 1, 60);
  run ++;
}
}
void keyPressed() {
    if (key == BACKSPACE&&setting.length() > 0) {
      setting = setting.substring(0, setting.length()-1);
    } else if (key == ENTER ||key == RETURN) {
      myPort.write(setting);
      run = 0;
  } else {
    setting += key;
  }
}
